from utils import *
HEURISTIC_MAX_VALUE = 350.0
PORCENTAJES_COLUMNAS = [0.25, 0.50, 1.0, 0.50,0.25]
class heuristic_wrap():
    
    def __init__(self, genotipo = None):
        self.genotipo = genotipo
    
    def heuristicaDistanciaDestino(self, agente, game, depth):
        acumulador = 0
        for i in range(filas):
            for j in range(filas):
                jugador = enabled_map[(game.enabled + 1) % 2]
                if game.board[i][j] == jugador:
					#Si la posicion es una final, darle el mayor puntaje a esa fila.
                    if estaEnPosicionFinal(i, j, jugador, game.board):
                        acumulador += HEURISTIC_MAX_VALUE / game.chips_per_player
                        #print jugador +" Estoy en posicion final, iupi ! " + str(i) + "-"+str(j) + "-"+str(game.board)
                    else:
                        puntaje = puntajeFilaJugador(i, jugador, self.genotipo)
                        acumulador += puntaje * PORCENTAJES_COLUMNAS[j]
        resultado = acumulador / HEURISTIC_MAX_VALUE
        return resultado if jugador == agente.player else - resultado

def puntajeFilaJugador(fila, jugador, genotipo):
    if genotipo != None:
            return genotipo[fila]
    else:
        if jugador == NEGRAS:
            return (fila)
        if jugador == BLANCAS:
            return (4 - fila)
